package com.nextel.project.pedido.mvc;



import com.nextel.project.Configuracion;
import com.nextel.project.canje.ControlCanje;
import com.nextel.project.devolucion.ControlDevolucion;
import com.nextel.project.pedido.ControlPedido;
import com.nextel.project.pedido.bean.ArticuloPorNombreBean;
import com.nextel.project.stock.ControlStock;
import com.nextel.project.util.BuscarListener;
import com.nextel.ui.Key;
import com.nextel.ui.OListenerKey;
import com.nextel.ui.OSoftKey;
import com.nextel.ui.OUILook;
import com.nextel.ui.custom.OScrollListWrap;
import pe.com.nextel.idioma.IdiomaManager;
import pe.com.nextel.main.MVCAction;
import pe.com.nextel.util.ArrayList;

import pe.com.nextel.util.List;

/**
 *
 *
 * @version 1.0
 */
public class MVCProductoResultado extends MVCAction implements BuscarListener,OListenerKey {// implements ItemStateListener  {
    
    private OSoftKey cmdSigue,cmdAtras;
    private List lstObject;
    private OScrollListWrap  lstMenu;
    boolean primerVez = true;
    List listaDatos = new ArrayList();
    
    
    private boolean flagForm;
    private boolean finalizo;
    
    private byte busquedaMVC;
    
    public static final byte PRODUCTO_PEDIDO = 1;
    public static final byte PRODUCTO_DEVOLUCION = 2;
    public static final byte PRODUCTO_CANJE= 3;
    public static final byte PRODUCTO_STOCK = 5;
    
    
    
    public void setBusquedaMVC(byte tipo) {
        busquedaMVC = tipo;
    }

    
    
    protected void destroy() {
        
        super.destroy();
        if (lstObject != null) {
            lstObject.clear();
            lstObject = null;
        }
    }
    
    protected void createView() {
        cmdSigue = new OSoftKey(Configuracion.BOTON_SEGUIR);
        cmdAtras = new OSoftKey(Configuracion.BOTON_ATRAS);
        
        formulario.setTitle(" ... ... ", OUILook.PLAIN_SMALL_TITLE);
        
        formulario.addSoftKey(cmdSigue);
        formulario.addSoftKey(cmdAtras);
        
    }
    
    protected void createItems() {
        flagForm = true;
        finalizo = false;
        listaDatos.clear();
        primerVez = true;
        
        if(lstObject == null){
            lstObject = new ArrayList();
        }
        
        lstMenu = new OScrollListWrap(formulario.getWidth(),formulario.getBodyHeight(),
                OUILook.PLAIN_SMALL_SOFTKEY, OUILook.PLAIN_SMALL_TEXT );
        lstMenu.setModeWrap(true);
        lstMenu.listenerKey = this;
        lstMenu.isWithBorder = false;
        
        formulario.add(lstMenu);
        
    }
    
    
    public void performAction(OSoftKey c) {
        if (flagForm) {
            if (c == cmdSigue) {
                if (lstObject.size() > 0) {
                    

                    System.out.println("MVCProductoResultado= " + busquedaMVC);
                    ArticuloPorNombreBean articuloPorNombre = (ArticuloPorNombreBean) lstObject.get(lstMenu.getSelectedIndex());

                    if (busquedaMVC == PRODUCTO_PEDIDO) {
                        if (ControlPedido.getInstance().getArticulo(articuloPorNombre) != null) {
                            finalizo = true;
                            flagForm = false;
                            destroy();
                            
                            ControlPedido.getInstance().mvcProductoDetalle.setBusquedaMVC(busquedaMVC);
                            
                            ControlPedido.getInstance().setCurrent(ControlPedido.getInstance().mvcProductoDetalle);
                        } else {
                            destroy();
                            flagForm = true;
                        }
                    } else if (busquedaMVC == PRODUCTO_DEVOLUCION) {
                        if (ControlDevolucion.getInstance().getArticulo(articuloPorNombre) != null) {
                            
                            finalizo = true;
                            flagForm = false;
                            destroy();
                            ControlDevolucion.getInstance().setCurrent(ControlDevolucion.getInstance().mvcDevolucionDatos.showScreenOdate());
                            
                        } else {
                            destroy();
                            flagForm = true;
                        }

                    } else if(busquedaMVC == PRODUCTO_STOCK){
 
                            finalizo = true;
                            flagForm = false;
                            destroy();
                            ControlStock.getInstance().procesarStock(articuloPorNombre);

                    }
                    else {
                        if (ControlCanje.getInstance().getArticulo(articuloPorNombre) != null) {
                            finalizo = true;
                            flagForm = false;
                            destroy();
                            ControlCanje.getInstance().setCurrent(ControlCanje.getInstance().mvcCanjeDatos.showScreenOdate());
                        } else {
                            destroy();
                            flagForm = true;
                        }
                    }
                }
                
            } else if (c == cmdAtras) {
                                
                if (busquedaMVC == PRODUCTO_PEDIDO) {
                    flagForm = false;
                    finalizo = true;
                    destroy();
                    ControlPedido.getInstance().setCurrent(ControlPedido.getInstance().mvcProductoBusqueda);
                    
                } else if (busquedaMVC == PRODUCTO_DEVOLUCION) {
                    flagForm = false;
                    finalizo = true;
                    destroy();
                    ControlDevolucion.getInstance().setCurrent(ControlDevolucion.getInstance().mvcProductoBusqueda);
                    
                    
                } else if (busquedaMVC == PRODUCTO_STOCK) {
                    flagForm = false;
                    finalizo = true;
                    destroy();
                    //ControlPedido.getInstance().setCurrent(ControlPedido.getInstance().mvcProductoBusqueda);
                    ControlStock.getInstance().setCurrent(ControlStock.getInstance().mvcProductoBusqueda);
                    
                    
                }
                else {
                    flagForm = false;
                    finalizo = true;
                    destroy();
                    ControlCanje.getInstance().setCurrent(ControlCanje.getInstance().mvcProductoBusqueda);
                    
                    
                }
                
            }
                   
        }
    }
    
    public void performKey(int indx){
        
        if (flagForm) {
            
            if(indx == Key.Key_OK){
              
                ArticuloPorNombreBean articuloPorNombre = (ArticuloPorNombreBean) lstObject.get(lstMenu.getSelectedIndex());

                if (busquedaMVC == PRODUCTO_PEDIDO) {
                    if (ControlPedido.getInstance().getArticulo(articuloPorNombre) != null) {
                        finalizo = true;
                        flagForm = false;
                        destroy();
                        ControlPedido.getInstance().setCurrent(ControlPedido.getInstance().mvcProductoDetalle);
                    } else {
                        destroy();
                        flagForm = true;
                    }
                } else if (busquedaMVC == PRODUCTO_DEVOLUCION) {
                    if (ControlDevolucion.getInstance().getArticulo(articuloPorNombre) != null) {
                        finalizo = true;
                        flagForm = false;
                        destroy();
                        ControlDevolucion.getInstance().setCurrent(ControlDevolucion.getInstance().mvcDevolucionDatos.showScreenOdate());
                        
                    } else {
                        destroy();
                        flagForm = true;
                    }
                } else {
                    if (ControlCanje.getInstance().getArticulo(articuloPorNombre) != null) {
                        finalizo = true;
                        flagForm = false;
                        destroy();
                        ControlCanje.getInstance().setCurrent(ControlCanje.getInstance().mvcCanjeDatos.showScreenOdate());
                    } else {
                        destroy();
                        flagForm = true;
                    }
                }
            }
        }
        
    }
    
    
    
    
    public void agregarElementosVectorDatos(List lista) {
        if (!finalizo) { // si no finaliza la busqueda o se interrumpe
   
            ArticuloPorNombreBean articuloPorNombreBean;
            
            for(int i=0 ; i < lista.size();i++){
                
                articuloPorNombreBean = (ArticuloPorNombreBean) lista.get(i);
                
                listaDatos.add(articuloPorNombreBean.getNombreArticulo( ));
                
                    lstObject.add(articuloPorNombreBean);
                
            }
            
            if (primerVez) {
                lstMenu.populate(listaDatos);
                formulario.repaint();
                primerVez = false;
                
            } 
            
            lista.clear();
            lista = null;
            articuloPorNombreBean = null;
            
            
        }
    }
    
    public void finalizo() {
        finalizo = false;
        
        String texto = IdiomaManager.getInstance().getMensaje(IdiomaManager.JAVA_PRODUCTO);
        
        if (formulario != null && lstObject != null) {
            
            if(lstObject.size()>1)
            {
                texto = IdiomaManager.getInstance().getMensaje(IdiomaManager.JAVA_PRODUCTOS);
            }
                
            formulario.setTitle(lstObject.size() + " "+ texto, OUILook.PLAIN_SMALL_TITLE); //"Productos"
            lstMenu.recalcular( );
//            lstMenu.setFlagPaint(true);
            formulario.repaint();
            
        }
    }
    
    public boolean esFinalizadaBusqueda() {
        return finalizo;
    }
    
    
}


